6单选假定变量x的类型为long,对于变量y的初始化声明“inty=(int)x;”,其对应的汇编指令不可能是()。
A.movslq%edx,%rax
B.movzlq%edx,%rax
C.movl%edx,%eax
D.movsql%rdx,%eax
7单选以下是C语言赋值语句“x=a*b+c;”对应的x86-64汇编代码:movslq%edx,%rdxmovsbl%sil,%esiimull%edi,%esimovslq%esi,%rsileaq(%rdx,%rsi),%rax已知x、a、b和c分别在RAX、RDI、RSI和RDX对应宽度的寄存器中,根据上述汇编指令序列,推测x、a、b和c的数据类型分别为()。
A.x—long,a—long,b—char,c—int
B.x—long,a—long,b—char,c—long
C.x—long,a—int,b—char,c—long
D.x—long,a—int,b—char,c—int
8单选假定long型变量t、int型变量x和short型变量y分别在RAX、RDI和RSI对应宽度寄存器中,C语言赋值语句“t=(long)(x+y);”对应的x86-64汇编指令序列不可能是()。
A.movswl%si,%edxaddl%edi,%edxmovslq%edx,%rax
B.movswq%si,%rdxleaq(%rdx,%rdi),%rax
C.movswq%si,%rsimovslq%edi,%rdileaq(%rsi,%rdi),%rax
D.movswq%si,%raxmovslq%edi,%rdxaddq%rdx,%rax
9单选以下关于x86-64过程调用的叙述中,错误的是()。
A.前6个参数采用通用寄存器传递,其余参数通过栈传递
B.返回参数存放在RAX相应宽度的寄存器中
C.在通用寄存器中传递的参数,都存放在64位寄存器中
D.在栈中的参数若是基本类型,则被分配8个字节空间
10单选以下关于IA-32和x86-64指令系统比较的叙述中,错误的是()。
A.对于入口参数,x86-64可用通用寄存器传递,而IA-32需用栈来传递
B.对于返回地址,x86-64使用通用寄存器保存,而IA-32使用栈来保存
C.对于浮点操作数,x86-64存于128位的XMM中,而IA-32存于80位的ST(i)中
D.对于64位数据,x86-64可用一条指令处理,而IA-32需多条指令处理
计算机系统基础(一):程序的表示、转换与链接
南京大学
军职在线答案
大学网课